/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: Lenovo
 * Date: 2025-03-22
 * Time: 15:54
 */
/**
 * 父类：展示静态绑定的各种场景
 */
class Parent {
    // 场景1：成员变量（静态绑定）
    public String name = "Parent";

    // 场景2：静态方法（静态绑定）
    public static void staticMethod() {
        System.out.println("Parent的静态方法");
    }

    // 场景3：final方法（静态绑定）
    public final void finalMethod() {
        System.out.println("Parent的final方法");
    }

    // 场景4：private方法（隐式final，静态绑定）
    private void privateMethod() {
        System.out.println("Parent的private方法");
    }

    // 场景5：通过公有方法调用private方法
    public void callPrivate() {
        privateMethod(); // 编译时绑定到Parent.privateMethod()
    }

    // 场景6：方法重载（静态绑定）
    public void overloadMethod(int a) {
        System.out.println("Parent重载方法: int -> " + a);
    }
    public void overloadMethod(String s) {
        System.out.println("Parent重载方法: String -> " + s);
    }

    // 场景7：构造方法（静态绑定）
    public Parent() {
        System.out.println("Parent构造方法");
    }
}

/**
 * 子类：尝试覆盖父类方法（部分失败）
 */
class Child extends Parent {
    // 场景1：成员变量隐藏（非重写）
    public String name = "Child";

    // 场景2：静态方法隐藏（非重写）
    public static void staticMethod() {
        System.out.println("Child的静态方法");
    }

    // ❌ 场景3：无法重写final方法
    // public void finalMethod() {}

    // 场景4：子类定义同名private方法（与父类无关）
    private void privateMethod() {
        System.out.println("Child的private方法");
    }

    // 场景6：方法重载（扩展父类）
    public void overloadMethod(double d) {
        System.out.println("Child新增重载方法: double -> " + d);
    }

    // 场景7：子类构造方法
    public Child() {
        super(); // 显式调用父类构造方法（静态绑定）
        System.out.println("Child构造方法");
    }
}